package main

import (
	"context"
	"fmt"
	"github.com/liuxinbo1984/iprotoc/hello"
	"google.golang.org/grpc"
	"net"
)

type Server struct {
	//新版生成的go源码强制要求这里默认集成默认生成的unimplemented代码，大家集成以下就行了，其他代码不用变
	hello.UnimplementedGreeterServer
}

// SayHello 业务开发部分
func (s *Server) SayHello(ctx context.Context, request *hello.HelloRequest) (*hello.HelloReply, error) {
	return &hello.HelloReply{Message: "Hello " + request.Name}, nil
}

func main() {
	// grpc框架，集成protocol buffer,提供网络协议处理能力
	g := grpc.NewServer()

	// protocol buffer框架，主要解决序列化和反序列化问题
	s := Server{}
	hello.RegisterGreeterServer(g, &s)
	lis, err := net.Listen("tcp", fmt.Sprintf(":8080"))
	if err != nil {
		panic("failed to listen: " + err.Error())
	}
	err = g.Serve(lis)
	if err != nil {
		return
	}
}
